<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<script>
    console.log(Array.prototype)
    //copyWithin  从原数组中读取内容  替换数组的指定位置的内容
    //参数  (替换的目标起始位置target, 替换的内容是 查找的起始位置begin,查找的结束位置end 如果没写
    // 默认到结束位置  溢出部分自动截取掉  原数组的length是不会变的)
    let ary1=[1,2,3,4,5,6,7,8];
    let ary2=[1,2,3,4,5,6,7,8];

    ary1.copyWithin(4,2,4);
    ary2.copyWithin(1,4);
    console.log(ary1);
    console.log(ary2)


    //fill  按照指定字符填充数组的指定位置
    // 将数组的每一项都变成指定字符
    console.log(ary1.fill("广告"));

    let ary3=[1,2,3,4,5,6,7,8];

//    所有数组的实例上的方法  参数是从索引n到到索引m的  都是包含n不包含m
    console.log(ary3.fill("广告",3,6))


    //includes 判断数组中有没有某一项
    // 第二个参数开始查找的位置索引
    console.log([1,2,3].includes(1,1));

    //遍历数组的方法  参数是一个函数，这个函数中的this是window，我们可以通过第二个参数改变函数中的this
    // reduce 和 reduceRight 第二个参数是初始值

    //filter  过滤数组 根据返回值去过滤原数组
    //返回一个新数组
    let ary4 =["广告",1,2,3,"广告四"];
    let newAry = ary4.filter(function (item,index) {
        //如果返回true 就留下当前项   返回false不留下当前项
        return typeof item === "string"; //number
    })

    console.log(newAry)

    //find  先遍历数组   一旦参数返回true  停止查找  返回当前项
    //一旦返回了true  就不会找了  只会找一个  找完了  都没找到 就是undefined
    let a = ary4.find(function (item,index) {
//        return typeof item ==="number"
        return index === 4
    })
    console.log(a)

    //只找索引的
    let b = ary4.findIndex(function (item) {
        return typeof item ==="number"
    })
    console.log(b)

    // every  遍历数组   如果遍历每一项都返回true
    //最后结果为true  只要有一个为false  结果就是false

     console.log([1,2,3,4,"广告"].every(function (item) {
         return typeof item==="number"
     }))

    //some 遍历数组  只要遍历有一项是true  最后结果就是true
    console.log([1,2,3,4,"广告"].some(function (item) {
        return typeof item==="string"
    }))

    //reduce 迭代
    let ary5 = [1,2,3,4,5]
    console.log(ary5.reduce(function (prey,item) {
        // perv  上一次的返回值  item是当前项
        return prey+item;
    },10))//给prey一个默认值
    //reduceRight  跟reduce一样  只是顺序从右开始

    //keys 遍历  每一项索引的接口  使用for of遍历
    let ary6=[1,2,3,4];
    for(let key of ary6.keys()){
        console.log(key)
    }

    //默认使用for of遍历数组  默认遍历的就是每一项
    for(let item of ary6){
        console.log(item)
    }

    //entries 遍历接口 可以遍历到索引和每一项
    let ary7=["a","b","c","d","e"]
    for (let [index,item] of ary7.entries()){
        console.log(index,item)
    }

</script>
</body>
</html>